package com.haidechizi.i18n.code.generator.common.message.generator;


import com.google.common.collect.Lists;
import com.haidechizi.i18n.code.generator.common.message.constants.CodeGeneratorTypeConstants;

import java.util.List;
import java.util.regex.Matcher;

public class VueCodeGenerator extends BaseCodeGenerator {

    private static final List<String> supportSuffixes = Lists.newArrayList("tpl", "js");

    /**
     * 生成properties资源key
     *
     * @param cnData
     * @param fileSuffix
     * @param content
     * @return
     */
    @Override
    protected String generateKey(String cnData, String fileSuffix, String content) {
        return keyGeneratorAdapter.generatorKey(cnData, fileSuffix, content);
    }

    /**
     * 类型
     * 1.java静态资源国际化
     * 2.前端静态资源国际化
     * 3.后端动态资源国际化
     *
     * @return
     */
    @Override
    public String type() {
        return CodeGeneratorTypeConstants.VUE;
    }

    /**
     * 是否支持当前文件类型
     *
     * @param fileType
     * @return
     */
    @Override
    public boolean isSupport(String fileType) {
        return supportSuffixes.contains(fileType);
    }

    /**
     * 创建资源文件
     *
     * @param path
     */
    @Override
    public void createPropertiesFile(String path) {

    }

    /**
     * 生成需要替换的资源
     *
     * @param cnData
     * @param content
     * @param matcher
     * @return
     */
    @Override
    protected String generateResourceData(String cnData, String content, Matcher matcher, String fileSuffix) {
        if ("js".equals(fileSuffix)) {
            // 获取整个中文字符串
            return super.generateResourceData(cnData, content, matcher, fileSuffix);
        }
        return cnData;

    }

    @Override
    protected String generateReplaceData(String key, String cnData, String content, String fileSuffix) {
        if ("js".equals(fileSuffix)) {
            return "i18n_transfer(\"" + key + "\")";
        }
        return "$t('" + key + "')";
    }
}
